package moj_pakiet;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Klient {
 int  idKlienta;
String imieKlienta;
String nazwiskoKlienta;
String pesel;
int poziomZaufania;
String email ;


Klient(){}

public Klient(int idKlienta, String  imieKlienta ,String nazwiskoKlienta,String pesel , int poziomZaufania , String email){
	this.idKlienta=idKlienta;
	this.imieKlienta=imieKlienta;
	this.nazwiskoKlienta=nazwiskoKlienta;
	this.pesel=pesel;
	this.email=email;
	this.poziomZaufania=poziomZaufania;	
}
public Klient(Klient k2){
	this.idKlienta=k2.idKlienta;
	this.imieKlienta=k2.imieKlienta;
	this.nazwiskoKlienta=k2.nazwiskoKlienta;
	this.pesel=k2.pesel;
	this.email=k2.email;
	this.poziomZaufania=k2.poziomZaufania;	
	
}
public boolean pobierzDaneKlientaPoId(int idKlienta) throws SQLException{	
	String nazwabazy="baza.db";
		
		try {
			Class.forName("org.sqlite.JDBC");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
			return false;
		}
	
	Connection polaczenie=null;
	try {
		polaczenie = DriverManager.getConnection("jdbc:sqlite:"+nazwabazy);
	} catch (SQLException e) {
		e.printStackTrace();
		return false;
	}
	 java.sql.Statement statement = null;
	try {
		statement = polaczenie.createStatement();
	} catch (SQLException e) {
	
		e.printStackTrace();
		return false;
	}
	 try {
		statement.setQueryTimeout(30);
	} catch (SQLException e) {
	
		e.printStackTrace();
		return false;
	}
	     
	ResultSet wynik = null;
	try {
		wynik = statement.executeQuery("select * from klienci where idKlienta="+idKlienta);
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
		return false;
	}
	
	this.idKlienta= wynik.getInt("idKlienta");
	this.imieKlienta= wynik.getString("imieKlienta");
	this.nazwiskoKlienta= wynik.getString("nazwiskoKlienta");
	this.pesel= wynik.getString("pesel");
	this.email= wynik.getString("email");
	this.poziomZaufania= wynik.getInt("poziomZaufania");
	
	polaczenie.close();
	
	return true;
}

public boolean pobierzDaneKlientaPoNrPesel(int peselKlienta) throws SQLException{	
	String nazwabazy="baza.db";
		
		try {
			Class.forName("org.sqlite.JDBC");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
			return false;
		}
	
	Connection polaczenie=null;
	try {
		polaczenie = DriverManager.getConnection("jdbc:sqlite:"+nazwabazy);
	} catch (SQLException e) {
		e.printStackTrace();
		return false;
	}
	 java.sql.Statement statement = null;
	try {
		statement = polaczenie.createStatement();
	} catch (SQLException e) {
	
		e.printStackTrace();
		return false;
	}
	 try {
		statement.setQueryTimeout(30);
	} catch (SQLException e) {
	
		e.printStackTrace();
		return false;
	}
	     
	ResultSet wynik = null;
	try {
		wynik = statement.executeQuery("select * from klienci where pesel="+peselKlienta);
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
		return false;
	}
	
	this.idKlienta= wynik.getInt("idKlienta");
	this.imieKlienta= wynik.getString("imieKlienta");
	this.nazwiskoKlienta= wynik.getString("nazwiskoKlienta");
	this.pesel= wynik.getString("pesel");
	this.email= wynik.getString("email");
	this.poziomZaufania= wynik.getInt("poziomZaufania");
	
	polaczenie.close();
	
	return true;
}

public boolean  klientDodajDoBazy() throws SQLException{  // dodaje do tabeli klient dane z tego obiektu
	try {
		Class.forName("org.sqlite.JDBC");
	} catch (ClassNotFoundException e) {
	
		e.printStackTrace();
		return false;
	}
	String nazwaBazy="baza.db";
	Connection polaczenie=null;
	try {
		polaczenie = DriverManager.getConnection("jdbc:sqlite:"+nazwaBazy);
	} catch (SQLException e) {
	
		e.printStackTrace();
		return false;
	}
    	
	Statement dodajWpis = null;
	try {
		dodajWpis = polaczenie.createStatement();
	} catch (SQLException e) {
			e.printStackTrace();
			return false;
	}
	
	
	dodajWpis.executeUpdate("INSERT INTO klienci VALUES ('"+this.idKlienta+"','"
						+this.imieKlienta+"','"+this.nazwiskoKlienta+"','"+ this.pesel
						+"','"+this.poziomZaufania +"','"+
						this.email+"' );");
	
	polaczenie.close();
	return true;
}
public boolean klientUsunZBazy() throws SQLException{
		String nazwabazy="baza.db";
		
		try {
			Class.forName("org.sqlite.JDBC");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}
		
		Connection polaczenie=null;
		polaczenie = DriverManager.getConnection("jdbc:sqlite:"+nazwabazy);
		
		Statement usunWpis=polaczenie.createStatement();
		usunWpis.executeUpdate("DELETE FROM klienci where idKlienta="+this.idKlienta);
	
		polaczenie.close();
	
		return true;
}
public boolean klientZmienwBazie() throws SQLException{
	String nazwabazy="baza.db";
		
	try {
		Class.forName("org.sqlite.JDBC");
	} catch (ClassNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
		return false;
	}
	
	Connection polaczenie=null;
	try {
		polaczenie = DriverManager.getConnection("jdbc:sqlite:"+nazwabazy);
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
		return false;
	}
	
	Statement zmienWpis=polaczenie.createStatement();
	
	zmienWpis.executeUpdate("update klienci set imieKlienta='"+this.imieKlienta +
			"',nazwiskoKlienta='"+ this.nazwiskoKlienta+
			"',pesel='"+this.pesel+
			"',email='"+this.email+
			"',poziomZaufania='"+this.poziomZaufania +
			"' where idKlienta='"+this.idKlienta+"'" );
	
	polaczenie.close();
	return true;

}
// chyba niepotrzebne?
public void klientWyswietl() throws SQLException{
		String nazwabazy="baza.db";
		
		try {
			Class.forName("org.sqlite.JDBC");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			
		}
	
	Connection polaczenie=null;
	try {
		polaczenie = DriverManager.getConnection("jdbc:sqlite:"+nazwabazy);
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	 java.sql.Statement statement = null;
	try {
		statement = polaczenie.createStatement();
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	 try {
		statement.setQueryTimeout(30);
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	     
	ResultSet wynik = null;
	try {
		wynik = statement.executeQuery("select * from klienci");
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	int i=0;
	while(wynik.next())
	{
	Integer a= wynik.getInt("idKlienta");
	System.out.println("id: "+a.toString());
	
	i=i+1;
	}
	
	polaczenie.close();
	
	
}
public String toString(){
		
	return "Dane klienta o id = " + this.idKlienta + "\nImie i nazwisko: "+ this.imieKlienta + 
	" "+this.nazwiskoKlienta + "\nPesel: "+this.pesel  +"\nPoziom zaufania: "+ this.poziomZaufania
	+ "\nE-mail: "+this.email;
}

}
